Disaster Recovery Guide
Docker guide: https://docs.docker.com/engine/install/ubuntu/
Restore Application Server
Requirements & Prereqs
- Ubuntu 22.04 LTS or Ubuntu 24.04 LTS
- Docker
- nfs
- nginx
Install NFS and nginx
apt install nfs-common nginx
Mount NFS
mkdir -p /mnt/backups/appbackup
fstab >>
192.168.0.31:/mnt/backups/appbackup /mnt/backups/appbackup nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
mount -a
Extract backup
tar -xvzpf /mnt/backups/appbackup/backup-file-name.tar.gz -C /
Setup directories
mkdir -p /var/opt/zm/DataDumps/
mkdir -p /var/log/nginx/
Setup services
- Tailscale
- node_exporter
Restart nginx
systemctl restart nginx
Start SEIR services
cd /opt/apps
docker compose up -d
cd /opt/apps/zm/unfepi
docker compose up -d
Reboot OS
reboot
Verify
Check the following for maintenance scripts and scheduled jobs
- /root/scripts/
- crontab
Restore Database Servers
Requirements & Prereqs
- Ubuntu 22.04 LTS
- MySQL 5.6 community edition
- Percona xtrabackup
- nfs
Install NFS
apt install nfs-common
Mount NFS
mkdir -p /mnt/backups/database
fstab >>
192.168.0.31:/mnt/backups/database /mnt/backups/database nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
mount -a
Extract backup
mkdir -p /tmp/mysql
tar -xvzpf /mnt/backups/database/xtrabackups/backup-file-name.tar.gz -C /tmp/mysql/
Install MySQL & Percona Xtrabackup
- Refer to the Deployment guides
Stop MySQL
systemctl stop mysql
Setup directories
mkdir -p /var/log/mysql
chown mysql:adm /var/log/mysql
chmod 750 /var/log/mysql
rm -rf /var/lib/mysql/*
mkdir -p /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
mkdir -p /tmp/xtrabackup_backupfiles
chmod 755 /tmp/xtrabackup_backupfiles
chown -R mysql:mysql /tmp/mysql/
Prepare Backup & Restore
xtrabackup --prepare --target-dir=/tmp/mysql/backup-file-directory
xtrabackup --copy-back --target-dir=/tmp/mysql/backup-file-directory --datadir=/var/lib/mysql
Fix directory permissions
chown -R mysql:mysql /var/lib/mysql
find /var/lib/mysql -type d -exec chmod 750 {} \;
find /var/lib/mysql-type f -exec chmod 640 {} \;
Start MySQL
systemctl start mysql
Setup services
- Tailscale
- node_exporter
- PMM node setup
Verify & Test
- Check mysql logs
- Test mysql connection
Replica setup
- Repeat the same steps for replica servers using the same backup file.
- Use the replica cnf file provided in the deployment guide.